package com.whately.core.httpsession;

import com.whately.core.base.constant.ConstantProject;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.ConfigureRedisAction;
import org.springframework.session.web.http.HeaderHttpSessionIdResolver;

/**
 * SpringBoot2.0 Session共享 引入外部redis配置文件 并解决为@EnableRedisHttpSession动态传参问题
 * https://blog.csdn.net/leiliz/article/details/98035397
 */
//设置session失效时间为30分钟
//@EnableRedisHttpSession(maxInactiveIntervalInSeconds= 1800)
    // 已经自定义了 MyRedisHttpSessionConfiguration ，不需要再启动 EnableRedisHttpSession
//@EnableRedisHttpSession
@Configuration
public class HttpSessionConfig {

    //这里有个小坑，如果服务器用的是云服务器，不加这个会报错
    //notify-keyspace-events 键空间通知:redis需要2.8以上版本，然后开启事件通知(Keyspace notifications功能默认是关闭的)
    //如果你的Redis不是你自己维护的，比如你是使用阿里云的Redis数据库，你不能够更改它的配置，那么可以使用如下方法
    //通过启用ConfigureRedisAction.NO_OP这个bean组件，禁止通过客户端调用CONFIG命令，避免报错
    @Bean
    public static ConfigureRedisAction configureRedisAction() {
        return ConfigureRedisAction.NO_OP;
    }


    @Bean
    public HeaderHttpSessionIdResolver httpSessionStrategy() {
        return new HeaderHttpSessionIdResolver(ConstantProject.response_header_token_name);
    }

}
